#include <iostream>
#include <algorithm>
using namespace std;

/*
    copy() 将范围内的元素复制到指定位置
    copy_if() 将范围内的元素复制到指定位置，并满足条件
        返回值：指向目标最后一个复制元素的下一个位置的迭代器

    大部分算法没有办法帮你扩容，如果目标数组不够用，就会报错
    copy会清空目标数组
*/

int main()
{
    int arr1[5] = {11, 22, 33, 44, 55};
    int arr2[12] = {0};

    // copy(起始位置, 结束位置, 目标位置)
    // copy(arr1, arr1+5, arr2);

    // copy_if(起始位置, 结束位置, 目标位置, 筛选条件)
    auto ret = copy_if(arr1, arr1 + 5, arr2, [](int a)
                       { return a % 2 != 0; });
    int n = ret - arr2;
    for (int i = 0; i < n; i++)
    {
        cout << arr2[i] << " ";
    }
    cout << endl;

    return 0;
}